/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.clinicariobamba.ReglasNegocio.Funciones;

import com.clinicariobamba.Accesodatos.Conexion;
import com.clinicariobamba.ReglasNegocio.Clases.Composicion;
import com.clinicariobamba.ReglasNegocio.Clases.Entrada;
import com.clinicariobamba.ReglasNegocio.Clases.TipoEntrada;
import com.clinicariobamba.Util.Util;
import java.sql.ResultSet;
import java.util.ArrayList;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

/**
 *
 * @author Gis
 */
public class FuncionesEntrada {
    
    public static ArrayList<Entrada> obtenerEntradas(int id_composicion) {
        try {
            Conexion con = new Conexion();
            ArrayList<Entrada> entrada = new ArrayList<Entrada>();
            
            try {
                String sql = String.format("select e.id_entrada, e.contenido, t.id_tipo, t.descripcion, t.codigo, t.sistema_codificacion\n"
                        + "from entrada as e inner join tipo_entrada as t on e.id_tipo = t.id_tipo\n"
                        + "where e.id_composicion = %d", id_composicion);
                ResultSet rs = con.ejecutarQuery(sql);
                while (rs.next()) {
                    String contenido = rs.getString(2)+"<br />";
                            
                    String sql2 = String.format("select ee.indicacion, e.descripcion from elemento_entrada as ee "
                            + "inner join elemento as e on ee.id_elemento = e.id_elemento\n"
                            + "where ee.id_entrada = %d", rs.getInt(1));
                    ResultSet rs2 = con.ejecutarQuery(sql2);
                    while (rs2.next()) {
                        contenido=contenido.concat(Util.ponerSaltoLinea(rs2.getString(2)+" "+rs2.getString(1)))+"<br />";
                        
                    }
                    entrada.add(new Entrada(new TipoEntrada(rs.getInt(3), rs.getString(4), rs.getString(5), rs.getString(6)), new Composicion(id_composicion), contenido));
                }
                
            } catch (Exception e) {
                FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                        "Error de consulta de datos de Pntrada", e.getMessage());
                FacesContext.getCurrentInstance().addMessage(null, message);
            }
            con.desconectar();
            return entrada;
        } catch (Exception ex) {
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Error en la conexion a la base de datos", ex.getMessage());
            FacesContext.getCurrentInstance().addMessage(null, message);
            return new ArrayList<Entrada>();
        }
    }
    
    public static boolean insertar(Entrada entrada) throws Exception {
        boolean resultado;
        resultado = false;
        try {
            String sql = String.format("SELECT `clinica riobamba`.`insertar_entrada`(%d,'%s', %d)", entrada.getComposicion().getIdComposicion(), entrada.getContenido(), entrada.getTipoEntrada().getIdTipo());
            Conexion c = new Conexion();
            ResultSet rs = c.ejecutarQuery(sql);
//            rs.next();
//            resultado = rs.getBoolean(1);
            while (rs.next()) {
                entrada.setIdEntrada(rs.getInt(1));
                resultado = true;
            }
            c.desconectar();
        } catch (Exception ex) {
            throw ex;
            
        }
        return resultado;
    }
}
